﻿using ModelLayer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CtrLayer
{
    public interface ICtrAchievement
    {
        /// <summary>
        /// Creates an achievement in the database.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="achievement">The achievement.</param>
        /// <returns>System.Int32.</returns>
        int CreateAchievement(User user, Achievement achievement);

        /// <summary>
        /// Gets the user achievements for a given user.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <returns>List{UserAchievement}.</returns>
        List<UserAchievement> GetUserAchievements(User user);

        /// <summary>
        /// Gets the number of participants on a given achievement.
        /// </summary>
        /// <param name="achievement">The achievement.</param>
        /// <returns>System.Int32.</returns>
        int GetAchievementUserCount(Achievement achievement);

        int SetUserAchievementStatus(UserAchievement userAchievement);

        int SetAchievementStatus(Achievement achievement);

        UserAchievement GetUserAchievement(int userId, int achId);
    }
}